/*
 * 
 * LegendShop 多用户商城系统
 * 
 *  版权所有,并保留所有权利。
 * 
 */
package com.legendshop.util;

import javax.servlet.http.HttpSession;

import com.legendshop.oa.model.RandNumDto;

/**
 * 验证码  工具类
 *
 */
public class ValidateCodeUtil {
	
	private static String  RANDOM_CODE = "RANDOM_VALIDATE_CODE_KEY";

	/**
	 * 验证用户输入的 随机验证码  是否正确，验证后清除
	 * @param randNum 用户输入的验证码
	 * @param session 用户的session
	 * @return 验证正确 返回true 否则返回false
	 */
	public static boolean validateCode(String randNum,HttpSession session) {
		if(randNum==null || session==null){
			return false;
		}
		System.out.println("validateCode--"+session.getId());
		RandNumDto code = (RandNumDto)session.getAttribute(RANDOM_CODE);
		if(code==null){
			return false;
		}
		session.removeAttribute(RANDOM_CODE);
		return code.getRandomString().equals(randNum.toLowerCase());
	}
	
	/**
	 * 验证用户输入的 随机验证码  是否正确，验证后不清除, 验证超过5次则清除,防止攻击
	 * @param randNum 用户输入的验证码
	 * @param session 用户的session
	 * @return 验证正确 返回true 否则返回false
	 */
	public synchronized static boolean validateCodeAndKeep(String randNum,HttpSession session){
		if (session == null || randNum==null) {
			return false;
		}
		RandNumDto result = null;
		try {
		    result =  (RandNumDto)session.getAttribute(RANDOM_CODE);
			if(result!=null && result.getRandomString().equals(randNum.toLowerCase())){
				//同一验证码 只能验证5次
				Integer times = result.getNum();
				if(times==null){
				}else if(times>5){
					session.removeAttribute(RANDOM_CODE);
					return false;
				}else{
					 result.addNum();
					 session.setAttribute(RANDOM_CODE,   result);
				}
				return true;
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return false;
	}

}